#include"Vector.h"
#include"Vector.cc" //实例化传参是由test.cc主导的，所以要将模版函数
#include<vector>
#include<typeinfo>

using std::cout;
using std::endl;

//extern int a;

void vector_test1()
{
    std::vector<int> v1;
    cout<<v1.size()<<endl;
    cout<<v1.capacity()<<endl;

    for(int i=0;i<=20;i++)
        v1.push_back(i);

    std::vector<int>::iterator it=v1.begin();

    cout<<v1.size()<<endl;
    cout<<v1.capacity()<<endl;

    //v1[21]=21;当[]的下标大于等于size时，是无效访问

    for(int i=0;i<20;i++)
        v1[i]=i;
    for(auto& e:v1)
        cout<<e<<" ";
    //auto it=v1.begin();
    //cout<<typeid(it).name()<<endl;
    // while(it!=v1.end())
    // {
    //     cout<<*it<<" ";
    //     it++;
    // }
    // cout<<endl;

}
void vector_test_my()
{
    vector<int> v1;

    for(int i=0;i<32;i++)
        v1.push_back(i);

    cout<<v1.size()<<endl;
    cout<<v1.capacity()<<endl;    

    vector<int>::iterator it1=v1.begin();

    v1.insert(v1.begin()+3,100);//这里一扩容，上面的那个it1迭代器就变成野指针，失效了！！

    for(int i=0;i<v1.size();i++)
    {   
        cout<<v1[i]<<" ";
    }
    cout<<endl;
    cout<<v1.size()<<endl;
    cout<<v1.capacity()<<endl;    

    vector<int>::iterator it2=v1.begin();

    //cout<<typeid(it).name()<<endl;
    // while(it!=v1.end())
    // {
    //     cout<<*it<<" ";
    //     it++;
    // }

    // while(it2 && it2!=v1.end())
    // {
    //     if(*it2%2==0)
    //     {
    //         it2=v1.erase(it2);
    //     }
    //     else it2++;
    // }

    //v1.erase(v1.begin(),v1.begin()+3);

    vector<int> v2(v1);

    // vector<int> v3;
    // for(int i=0;i<60;i++)
    //     v3.push_back(6);

    // v2=v3;

    vector<int> v4(v2.begin()+3,v2.end()-2);

    // for(int i=0;i<10;i++)
    //     v2.pop_back();

    //v2.resize(20,9);
    

    for(int i=0;i<v4.size();i++)
    {   
        cout<<v4[i]<<" ";
    }
    cout<<endl;
    cout<<v4.size()<<endl;
    cout<<v4.capacity()<<endl;    

}
int main()
{
    // vector_test1();
    // vector_test_my();

    vector<int> v1;
    return 0;
}